package org.nanotek;

import java.io.Serializable;

/**
 * A competitor interface defines a contract that a set of actions over 
 * a certain Context (or competition) will produce a result. 
 * It implements the Function (need a verification on super interface), 
 * since will be a function of a set of actions over a given context 
 * a Mapping of A -> C producing a Result R. 
 * 
 * @author josecanova
 *
 * @param <R>
 * @param <A>
 * @param <C>
 * @param <K>
 */
public interface Competitor <R extends Base<?>, A , C , K extends Serializable> extends Base<K> , Function <A,C>{

	public R compete (A[] actions , C context); 
	
}
